package com.bosssoft.g1.service;

import com.bosssoft.g1.dto.PageDTO;
import com.bosssoft.g1.dto.ResourceDTO;
import com.bosssoft.g1.entity.Node;
import com.bosssoft.g1.entity.Resource;
import com.bosssoft.g1.vo.IdNameVO;
import com.bosssoft.g1.vo.ResourceVO;
import com.github.pagehelper.PageInfo;

import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
 * @className: LoginService
 * @description:
 * 解决什么问题：
 * 资源管理
 * @author: YuXingZh
 * @date: 2024/6/1下午6:33
 * @since 1.0
 **/
public interface ResourceService {


    /**
     * 查询资源
     *
     * @param name      name
     * @param pageNum      分页
     * @param pageSize      分页
     * @return true 成功 false失败
     */
    PageInfo<ResourceVO> queryByName(String name, int pageNum, int pageSize);

    /**
     * 查询资源
     *
     * @param id      id
     * @param pageNum      分页
     * @param pageSize      分页
     * @return true 成功 false失败
     */
    PageInfo<ResourceVO> queryById(Long id, Integer pageNum, Integer pageSize);

    /**
     * 增加资源
     *
     * @param resourceDTO      资源DTO
     * @return true 成功 false失败
     */
    boolean addResource(ResourceDTO resourceDTO);

    /**
     * 通过 id 查询资源
     *
     * @param id 当前行id
     * @return 资源数据
     */
    ResourceVO findById(Long id);

    /**
     * 资源修改结果保存
     *
     * @param resourceDTO 资源信息包含 id
     * @return true成功 false失败
     */
    int updateResource(ResourceDTO resourceDTO);

    /**
     * 删除单个资源
     *
     * @param id
     * @return
     */
    Boolean deleteResource(Long id);

    /**
     * 批量删除资源
     * @param resourceDTOS
     * @return
     */
    Boolean batchDeleteResource(@NotEmpty List<ResourceDTO> resourceDTOS);

    PageInfo<ResourceDTO> getAllRes(PageDTO pageDTO);

    List<IdNameVO> getAllSubSystem();

    List<Node> queryResourceByTenantId(Long id);

    List<Node> queryResourceBySusId(Long id);
}
